﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BE_CruzDelSur;
using System.Data.SqlClient;
using System.Data;
using BR_CruzDelSur.Interfaces;

namespace BR_CruzDelSur
{
    public class BR_Producto : IBR_Producto
    {
        Conexion conn = new Conexion();
        
        public List<BE_Producto> f_ListarProductos(int CodigoCarga)
        {
            List<BE_Producto> lst = new List<BE_Producto>();
            SqlParameter[] param = new SqlParameter[1];
            param[0] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[0].Value = CodigoCarga;
            param[0].Direction = ParameterDirection.Input;

            DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_LISTAPRODUCTOXCARGA", param);
            BE_Producto producto;
            foreach (DataRow item in ds.Tables[0].Rows)
            {
                producto = new BE_Producto() { secuenciaCarga = Convert.ToInt32(item["INT_CODIGO_CARGA"].ToString()), Nombre= item["VCH_NOMBRE"].ToString(), Descripcion= item["VCH_DESCRIPCION"].ToString()};
                lst.Add(producto);
            }

            return lst;
        }

        public BE_Producto f_InsertarProducto(string nombre, 
            string descripcion, 
            int CodigoCarga)
        {
            SqlParameter[] param = new SqlParameter[3];
            param[0] = new SqlParameter("VCH_NOMBRE", SqlDbType.VarChar);
            param[0].Value = nombre;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("VCH_DESCRIPCION", SqlDbType.VarChar);
            param[1].Value = descripcion;
            param[1].Direction = ParameterDirection.Input;
            param[2] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[2].Value = CodigoCarga;

            BE_Producto entidad = null;
            try
            {
                int result = SqlHelper.ExecuteNonQuery(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_INSERTARPRODUCTO", param);

                entidad = new BE_Producto()
                {
                    Nombre = nombre,
                    Descripcion = descripcion,
                    secuenciaCarga = CodigoCarga
                };

            }
            catch (Exception ex) 
            { 
            
            }
            
            return entidad;
        }

        public bool f_EliminarProducto(int CodigoProducto)
        {
            SqlParameter[] param = new SqlParameter[1];
            param[0] = new SqlParameter("INT_CODIGO_PRODUCTO", SqlDbType.Int);
            param[0].Value = CodigoProducto;
            param[0].Direction = ParameterDirection.Input;

            bool entidad = true;
            try
            {
                int result = SqlHelper.ExecuteNonQuery(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_ELIMINARPRODUCTO", param);                
            }
            catch (Exception ex)
            {
                entidad = false;
            }

            return entidad;
        }

        public bool f_EliminarProductos(int CodigoCarga)
        {
            SqlParameter[] param = new SqlParameter[1];
            param[0] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[0].Value = CodigoCarga;
            param[0].Direction = ParameterDirection.Input;

            bool entidad = true;
            try
            {
                int result = SqlHelper.ExecuteNonQuery(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_ELIMINARPRODUCTOXCARGA", param);
            }
            catch (Exception ex)
            {
                entidad = false;
            }

            return entidad;
        }
    }
}
